其實雜湊函式並不是一種加密,但在現代通訊加密中確有這不可缺少的重要性
先前介紹的密碼系統幾乎提供了保密性、完整性和可用性
但在現代密碼學中,有幾種性質也是被重點關注的,不可抵賴性和身分驗證
而雜湊函式能提供很好的幫助
雜湊函式(英語:Hash function)是一種演算法,對於任意的輸入,會給出對應的雜湊值(hash values)
有點類似人類的指紋,一個好的雜湊函式會盡量滿足幾個條件:
1.不可逆推:對於任意的輸入值a,經過雜湊函式h,會得到雜湊值h(a),但對於雜湊值h(a)必須要無法回算出輸入值a
2.固定長度的輸出:無論輸入的數值是大小是高是矮,無論長怎樣,經過雜湊函式後都會變成一樣的長度
3.單一性:對於一個輸入值a,和其雜湊值h(a),不會存在其他輸入值b,而h(b)=h(a),所以說就跟指紋一樣,每個人都應該是獨一無二的
4.雪蹦效應:對於輸入值a,和其雜湊值h(a),當a被改動,無論改動多少(即使只是一個位元的變化)雜湊值h(a)都應該要有
巨大的改變
1.保護密碼:大部分的網站在儲存使用者的密碼時通常不會直接存明文,而是存其雜湊值,
由於雜湊值因該是一對一,所以將使用者輸入的密碼經過雜湊後比較伺服器存的雜湊值就能知道對不對了,
也能用於其他敏感資料
2.數位簽章:一種用公鑰演算法來辨識及確認電子文件簽署人身分、資格及電子文件真偽者
3.確保傳遞真實的資訊:將訊息和其雜湊值一起送出,能用來驗證訊息是否無誤
當一個雜湊函式被發現有兩個不同的輸入,但生成一樣的輸出時
就說該雜湊函式有碰撞
1.MD4(有碰撞)
2.MD5(有碰撞)
3.SHA-1(有碰撞)
4.SHA-256(無碰撞)
5.SHA-512(無碰撞)
有碰撞並不代表不能使用,但使用上就要小心,怕被當成攻擊點